// strcpy只是复制字符串，但不限制复制的数量，很容易造成缓冲溢出。strncpy要安全一些
/*
strcpy 是依据 “\0” 作为结束判断的，如果 s2 的空间不够，则会引起 buffer overflow。

memcpy用来在内存中复制数据，由于字符串是以“\0”结尾的，所以对于在数据中包含“\0”的数据只能用memcpy，如:"hell\0oworld"。

Strncpy和memcpy很相似，只不过它在一个终止的空字符处停止。当n>strlen(s1)时，给s2不够数的空间里填充“\0”；当n<=strlen(s1)时，s2是没有结束符“\0”的。

这里隐藏了一个事实，就是s2指向的内存一定会被写n个字符。

所以总的来说注意：

1、s2指向的空间要足够拷贝；使用strcpy时，s2指向的空间要大于等于s1指向的空间；使用strncpy或memcpy时，s2指向的空间要大于或等于n。

2、使用strncpy或memcpy时，n应该大于strlen(s1)，或者说最好n >= strlen(s1)+1；这个1 就是最后的“\0”。

3、使用strncpy时，确保s2的最后一个字符是“\0”。
4、memcpy可以对任意类型赋值
*/

memset(variable,0,sizeof(variableType));


char *strncpy(char* assigned,char *assign ,size_t size);    
memcpy(void *assigned,  const void *assign,  size_t  n);  

char *strcpy(char *assigned, const char *assign);